/*
gcc f2_main.cpp -o f2_main
valgrind  --trace-children=yes --tool=callgrind --callgrind-out-file=f2_main.callgrind_out ./f2_main
kcachegrind f2_main.callgrind_out

*/

// #include <stdio.h>


void emptyFunc( ){
	// printf("emptyFunc\n");
}

double calcSum(double inLs[], int LsSize){
	double sum=0;
	for(int i=0; i < LsSize; i++){
		sum+=inLs[i];
	}
	return sum;
}


int findMaxIndex(double inLs[], int LsSize){
	if(LsSize<=0){
		return 0.0;
	}
	int maxIdx=0;
	for(int i=0; i < LsSize; i++){
		if(inLs[maxIdx]<inLs[i]){
			maxIdx=i;
		}
	}
	return maxIdx;
}
int main(int argc,char** argv){
	double arr[]={5.6, 8.4, 0.8, 1.2};
	int arrSize=sizeof(arr)/sizeof(arr[0]);

	int cnt=10;
	for(int i =0; i < cnt; i++){
		int maxIdx=findMaxIndex(arr,arrSize);
		double sum=calcSum(arr,arrSize);
		double avg=sum/arrSize;
		double max=arr[maxIdx];
		// printf("maxIdx:%d max:%f sum:%f avg:%f\n",maxIdx,max,sum,avg);
		if(avg*2<max){
			arr[(maxIdx+1)%arrSize]+=.3;
			emptyFunc();
		}
	}
	return 0;
}

